// -*- coding: utf-8 -*- 
/**
 * Project: AlgorithmsLearn
 * Creator: yanking
 * Create time: 2022-02-28 14:52
 * IDE: IntelliJ IDEA
 * Introduction:
 */
package com.LeetCodeT.Greedy;

import org.junit.jupiter.api.Test;

public class RemoveDuplicateLettersT {
    // 去掉字符串中的重复数字
    public String removeDuplicateLetters(String s) {
        // 记录当前访问的最小字符位置 min ,如果没有则找到最后
        int len = s.length();
        int min = 0;
        StringBuilder b = new StringBuilder();
        for (int i = 0; i < len; i++) {
            char c = s.charAt(i);
            if (min == i) {
                // 后续最小值没有初始化，需要进行初始化
                for (int j = min + 1; j < len; j++) {
                    // 从当前位置开始往后面寻找最小字符
                    if (s.charAt(j) <= s.charAt(min)) {
                        min = j;
                        break;
                    }
                }
            }
            if (!(c >= s.charAt(min) && rp(s, c, i))) {
                // 当前字符如果有重复则必须要删除
                b.append(c);
            }
        }
        return b.toString();
    }

    private boolean rp(String s, char c, int k) {
        // 判断字符c是否在字符串s中重复
        for (int i = k + 1; i < s.length(); i++) {
            if (s.charAt(i) == c) {
                return true;
            }
        }
        return false;
    }

    @Test
    public void shout00() {
        // String s = "abccc";
        String s = "cbacdcbc";
        System.out.println(removeDuplicateLetters(s));
    }


}
